package org.zzz.service;

import org.apache.ibatis.annotations.Param;
import org.zzz.entity.Attendance;
import org.zzz.entity.AttendanceVo;
import org.zzz.entity.vo.AttendanceShowVo;

import java.util.Date;
import java.util.List;

/**
 * @Author ZZF
 * @Time 2021/04/19 15:12
 */
public interface AttendanceService {
    /**
     * 根据课程id和班级id添加
     * @param flag flag为0，根据课程和班级添加 否则只根据课程
     * @param cid
     * @param date
     * @param status
     * @param teacherId
     * @param classId
     * @return
     */
    boolean insertBatchAttendanceByClassIdAndCourseId(int flag,
                                                 String cid,
                                                 String date,
                                                 String status,
                                                 String teacherId,
                                                 String classId);

    /**
     * 根据班级id和教师id添加
     * @param date
     * @param teacherId
     * @param classId
     * @return
     */
    boolean insertAttendanceByClass(String sid, String cid,String date,String status, String teacherId, String classId);

    /**
     * 修改考勤表
     * @param attendance
     * @return
     */
    boolean updateAttendance(Attendance attendance);

    boolean updateAttendanceStatusById(String id,String status);

    /**
     * 根据日期获取考勤表
     * @param date
     * @return
     */
    List<AttendanceVo> listAttendanceByDate(String date);

    /**
     * 根据班级获取考勤表
     * @param classId
     * @return
     */
    List<AttendanceVo> listAttendanceByClass(String classId);

    /**
     * 根据学号获取考勤表
     * @param sid
     * @return
     */
    List<AttendanceShowVo> listAttendanceBySid(String sid);

    /**
     * 根据学生姓名获取考勤表
     * @param name
     * @return
     */
    List<AttendanceVo> listAttendanceBySName(String name);

    /**
     * 根据学号获取考勤信息
     * @param id
     * @return
     */
    AttendanceVo getAttendanceById(String id);

    /**
     * (根据教师账号)查询所有考勤信息
     * @param tid
     * @return
     */
    List<AttendanceShowVo> listAttendanceVoByTid(String tid);

    /**
     * 根据班级获取考勤信息
     * @param tid
     * @param classId
     * @return
     */
    List<AttendanceShowVo> listAttendanceVoByTidAndClassId(String tid,String classId);

    /**
     * 根据学生名称获取考勤信息
     * @param tid
     * @param sname
     * @return
     */
    List<AttendanceShowVo> listAttendanceVoByTidAndSname(String tid,String sname);

    /**
     * 根据日期获取考勤信息
     * @param tid
     * @param date
     * @return
     */
    List<AttendanceShowVo> listAttendanceVoByTidAndDate(String tid,String date);
}
